/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DickYang
 * Date: 2023-06-20
 * Time: 11:27
 *
 * 异常: 1.编译时异常 \ 受查异常
 *      2.运行时异常 \ 非受查异常
 */

public class Test {

    public static void test2(int[] array) throws CloneNotSupportedException {
        if (array == null){
            throw new CloneNotSupportedException(); //此时抛出的是一个编译时异常,需要使用throws声明此异常
            //如果当前方法没有处理这个异常,会把这个异常交给调用者处理
            //如果调用者没有处理此异常,则最后会被jvm自行处理: 终止程序
        }
    }

    public  static  void test1(int[] array) {
        if (array == null) {
            throw new NullPointerException(); //此时抛出的是一个运行时异常
            //如果当前方法没有处理这个异常,会把这个异常交给调用者处理
            //如果调用者没有处理此异常,则最后会被jvm自行处理: 终止程序
        }
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        //通过try catch 处理异常
        try {
            //用来写可能会发生异常的代码
            test1(new int[3]);
            test2(null);
        }catch (NullPointerException nullPointerException) {
            //用来处理异常的代码
            nullPointerException.printStackTrace(); //打印错误信息
            System.out.println("捕捉到了 NullPointerException 异常");
        }catch (CloneNotSupportedException cloneNotSupportedException) {
            //用来处理异常的代码
            cloneNotSupportedException.printStackTrace(); //打印错误信息
            System.out.println("捕捉到了 CloneNotSupportedException 异常");
        }finally {
            System.out.println("finally的内容一定会被执行,一般用来释放内存资源的");
        }

        System.out.println("正常代码的逻辑");

    }
}
